{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Import required packages"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import cntk\n",
    "from cntk import Trainer, learning_rate_schedule, UnitType\n",
    "from cntk.learners import sgd\n",
    "from cntk.layers import default_options, Dense"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Parameters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Training parameters.\n",
    "num_samples = 500\n",
    "initial_learning_rate = 0.001\n",
    "num_samples_to_train = 400\n",
    "num_iterations = 400\n",
    "batch_size = 25\n",
    "\n",
    "\n",
    "# Network has only one output which is its prediction.\n",
    "input_dim = 1\n",
    "num_outputs = 1\n",
    "num_minibatches_to_train = int(num_samples_to_train / batch_size)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Arbitrary Data Creation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nAvx/rf3tOt+ruaYAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7efdbed74278>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# random data\n",
    "features = np.linspace(-1, 1, num_samples)\n",
    "predictions = 2 * features + np.random.randn(*features.shape) * 0.5\n",
    "\n",
    "# Plotting the scatter plot\n",
    "plt.scatter(features, predictions, c='r')\n",
    "plt.xlabel(\"X\")\n",
    "plt.ylabel(\"Y\")\n",
    "plt.show()\n",
    "\n",
    "# adding one dimension for further processing. Input must be formatted as (batch_size,1).\n",
    "features = features[:,None]\n",
    "predictions = predictions[:,None]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Network"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Output is a single node with a linear operation.\n",
    "input = cntk.input_variable(input_dim)\n",
    "label = cntk.input_variable(num_outputs)\n",
    "pred = Dense(num_outputs)(input)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Defining loss function and evaluation metric\n",
    "loss = cntk.squared_error(pred, label)\n",
    "eval_fun = cntk.squared_error(pred, label)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Training "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/sina/anaconda/envs/cntk-py35/lib/python3.5/site-packages/cntk/core.py:351: UserWarning: your data is of type \"float64\", but your input variable (uid \"Input3\") expects \"<class 'numpy.float32'>\". Please convert your data beforehand to speed up training.\n",
      "  (sample.dtype, var.uid, str(var.dtype)))\n",
      "/home/sina/anaconda/envs/cntk-py35/lib/python3.5/site-packages/cntk/core.py:351: UserWarning: your data is of type \"float64\", but your input variable (uid \"Input4\") expects \"<class 'numpy.float32'>\". Please convert your data beforehand to speed up training.\n",
      "  (sample.dtype, var.uid, str(var.dtype)))\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Iteration: 10, Loss: 3.72\n",
      "Iteration: 20, Loss: 3.64\n",
      "Iteration: 30, Loss: 3.47\n",
      "Iteration: 40, Loss: 3.24\n",
      "Iteration: 50, Loss: 2.98\n",
      "Iteration: 60, Loss: 2.72\n",
      "Iteration: 70, Loss: 2.46\n",
      "Iteration: 80, Loss: 2.22\n",
      "Iteration: 90, Loss: 2.00\n",
      "Iteration: 100, Loss: 1.79\n",
      "Iteration: 110, Loss: 1.60\n",
      "Iteration: 120, Loss: 1.44\n",
      "Iteration: 130, Loss: 1.29\n",
      "Iteration: 140, Loss: 1.16\n",
      "Iteration: 150, Loss: 1.04\n",
      "Iteration: 160, Loss: 0.94\n",
      "Iteration: 170, Loss: 0.85\n",
      "Iteration: 180, Loss: 0.77\n",
      "Iteration: 190, Loss: 0.70\n",
      "Iteration: 200, Loss: 0.63\n",
      "Iteration: 210, Loss: 0.58\n",
      "Iteration: 220, Loss: 0.53\n",
      "Iteration: 230, Loss: 0.49\n",
      "Iteration: 240, Loss: 0.45\n",
      "Iteration: 250, Loss: 0.42\n",
      "Iteration: 260, Loss: 0.39\n",
      "Iteration: 270, Loss: 0.37\n",
      "Iteration: 280, Loss: 0.35\n",
      "Iteration: 290, Loss: 0.33\n",
      "Iteration: 300, Loss: 0.31\n",
      "Iteration: 310, Loss: 0.30\n",
      "Iteration: 320, Loss: 0.28\n",
      "Iteration: 330, Loss: 0.27\n",
      "Iteration: 340, Loss: 0.26\n",
      "Iteration: 350, Loss: 0.26\n",
      "Iteration: 360, Loss: 0.25\n",
      "Iteration: 370, Loss: 0.24\n",
      "Iteration: 380, Loss: 0.24\n",
      "Iteration: 390, Loss: 0.23\n",
      "Iteration: 400, Loss: 0.23\n"
     ]
    }
   ],
   "source": [
    "# Instantiate the trainer object to drive the model training\n",
    "learning_rate = learning_rate_schedule(initial_learning_rate, UnitType.minibatch)\n",
    "optimizer_op = sgd(pred.parameters, learning_rate)\n",
    "train_op = Trainer(pred, (loss, eval_fun), [optimizer_op])\n",
    "\n",
    "for step in range(0, num_iterations):\n",
    "    for batch_num in range(0, num_minibatches_to_train):\n",
    "        batch_features = features[(batch_num * batch_size):(batch_num * batch_size + batch_size), :]\n",
    "        batch_labels = predictions[(batch_num * batch_size):(batch_num * batch_size + batch_size), :]\n",
    "        train_op.train_minibatch({input: batch_features, label: batch_labels})\n",
    "        training_loss = train_op.previous_minibatch_loss_average\n",
    "        eval_value = train_op.previous_minibatch_evaluation_average\n",
    "    if (step+1) % 10 == 0:\n",
    "        print(\"Iteration: {0}, Loss: {1:.2f}\".format(step+1, training_loss))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Model Evaluation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Trained parameters are: w= 1.80, b=-0.01\n"
     ]
    }
   ],
   "source": [
    "# Test data\n",
    "test_features = features[num_samples_to_train:num_samples, :]\n",
    "test_labels = predictions[num_samples_to_train:num_samples, :]\n",
    "\n",
    "# Train data\n",
    "train_features = features[0:num_samples_to_train, :]\n",
    "train_labels = predictions[0:num_samples_to_train, :]\n",
    "\n",
    "# Print out our weight and bias\n",
    "print(\"Trained parameters are: w= {0:.2f}, b={1:.2f}\".format(pred.W.value[0][0], pred.b.value[0]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Plot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nj0EQBCFPKi6PQSk11fTydADPlWsugiAIQoayOZ8B3KiUaoPmdN4M4JIyzkUQBEHQGRWmpFyIKUkQ\nBCF/Ks6UJAiCIIxORDAIgiAIFkQwCIIgCBZEMAiCIAgWRDAIgiAIFkQwCIIgCBZEMAiCIAgWRDAI\ngiAIFkQwCIIgCBZEMAiCIAgWRDAIgiAIFkQwCIIgCBZEMAiCIAgWRDAIgiAIFkQwCIIgCBZEMAiC\nIAgWRDAIgiAIFkQwCIIgCBZEMAiCIAgWRDAIgiAIFkQwCIIgCBZEMAiCIAgWyi4YlFJXKKX2KKXG\nl3sugiAIQpkFg1LqQAAnAdhcznlUEr29veWewqhBnkUGeRYZ5FkUTrk1hlsAXFnmOVQU8qXPIM8i\ngzyLDPIsCqdsgkEpdRqA10g+U645CIIgCE5CpRxcKfUggAnmtwAQwLcALIJmRjL/ThAEQSgziuTI\nX1SpGQDWAfgAmkA4EMAbAI4imXI5f+QnKQiCMAYgmfemuyyCwTEJpV4FMJvk38o9F0EQhGqn3M5n\nA0JMSYIgCKOCUaExCIIgCKOH0aIxWFBKfU4p9axSardSanaW8waUUk8ppTYppfpGco4jRR7P4hSl\n1PNKqT8rpa4eyTmOFEqpcUqp3yqlXlBKJZVSTR7njcnvhZ+/sVJqhVLqRaXUk0qpI0d6jiNFrmeh\nlDpeKfV3pdRG/fhWOeY5EiilViml3lJKPZ3lnPy+FyRH3QHgEADTADwEzffgdd4rAMaVe77lfhbQ\nBPxLACYCCAN4EsD0cs+9BM9iGYCr9J+vBnBjtXwv/PyNAXwSwK/1n48G8Gi5513GZ3E8gHvLPdcR\neh7HATgSwNMev8/7ezEqNQaSL5B8Ebn9DgqjVOspFj6fxVEAXiS5meQwgLUAPj0iExxZPg3gp/rP\nPwVwusd5Y/F74edv/GkAPwMAko8BaFJKTcDYw+/3vSr8liTXA8gWuJP396LS//MQwINKqQ1KqYvK\nPZkycgCA10yvX9ffG2vsQ/ItACC5FcA+HueNxe+Fn7+x/Zw3XM4ZC/j9vn9YN538Wil12MhMbVSS\n9/eipAlu2ciS/HYNyft8DvMRkn9RSrVAWwie06VnRVGkZzEmyJEUaccrcmJMfC+EgngCwMEkP1BK\nfRLALwG0lXlOFUPZBAPJk3KflXOMv+j/Diql7oamYlbcAlCEZ/EGgINNr42EwYoj27PQHWwTSL6l\nlNoXgCMZUh9jTHwvbPj5G78B4KAc54wFcj4LkttMPz+glLpdKTWe5DsjNMfRRN7fi0owJbnaCZVS\ndUqphP5zPYCTATw7khMrA1420w0ApiqlJiqlIgA+D+DekZvWiHEvgC/pP58H4B77CWP4e+Hnb3wv\ngH8DAKXUMQD+bpjexhg5n4XZhq6UOgpaaP5YFgoK3utD/t+LcnvUPbzop0OziQ0B+AuAB/T39wPw\nK/3nSdCiETYBeAbAwnLPu1zPQn99CoAXALw4hp/FeGilVF4A8FsAzdX0vXD7GwO4GMCXTefcBi1i\n5ylkieir9CPXswDwFWgbgk0A/gjg6HLPuYTPYjWANwHsALAFwPmFfi8kwU0QBEGwUAmmJEEQBGEE\nEcEgCIIgWBDBIAiCIFgQwSAIgiBYEMEgCIIgWBDBIAiCIFgQwSBUJXoZ8416ae6NSqmDc3/KMUaT\nUurSUsxPEMqJ5DEIVYlS6h8kGwscoxXAfSRn5vm5GpJ7Crm2IJQS0RiEasVRPkApVaOUukkp9Zhe\nlfMi/f16pdQ6pdTjegOgU/WPfBfAZF3jWKY3h7nPNN4PlFJGKYJXlVI3KqUeB/A5pdRkpdQDegXY\nh5VSUuBNGDWUrYieIJSZuFJqIzQB8QrJMwDMg1ZH5mi9Bs8jSqnfQitJcjrJbUqpvQA8CuA+AAsB\nHE5yNqB1DYN3xVcAeJvkP+nnrgNwMcmX9Vo+PwTw8dLcqiDkhwgGoVr5wFjQTZwMYKZS6kz9dSO0\n7nlvALhRKfVRAHsA7K+U8uoFkY1uIF3c71gA/62UMjSXcIDxBKEkiGAQhAwKwFdJPmh5U6nzAOwF\noJ3kHqXUqwBiLp/fBat51n7O+/q/NQD+5iKYBGFUID4GoVpxK1GcBHCZUioEAEqpaUqpOgBNAFK6\nUDgBWq9hAHgPQIPp85sBHKaUCiulmuFhGiL5HoBXlVKfS09GqVkF35EgFAkRDEK14uYL+DGAfgAb\nlVLPAOgEUAvgLgBzlFJPATgXwHMAQK2+/yNKqaeVUstIvg7gv6GVe14LYGOW630BwDzdyf0sgNOK\nd2uCUBgSrioIgiBYEI1BEARBsCCCQRAEQbAggkEQBEGwIIJBEARBsCCCQRAEQbAggkEQBEGwIIJB\nEARBsCCCQRAEQbDw/wG6IbG14kM/aAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7efdbed5ffd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7efdb42730f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Evaluation of training set\n",
    "plt.scatter(train_features[:,0], train_labels[:,0], c='b')\n",
    "X = train_features[:,0]\n",
    "Y = pred.W.value[0] * train_features[:,0] + pred.b.value[0]\n",
    "plt.plot(X, Y, 'r')\n",
    "plt.xlabel(\"Feature\")\n",
    "plt.ylabel(\"Predicted\")\n",
    "plt.show()\n",
    "\n",
    "# Evaluation on test set\n",
    "plt.scatter(test_features[:,0], test_labels[:,0], c='b')\n",
    "X = test_features[:,0]\n",
    "Y = pred.W.value[0] * test_features[:,0] + pred.b.value[0]\n",
    "plt.plot(X, Y, 'r')\n",
    "plt.xlabel(\"Feature\")\n",
    "plt.ylabel(\"Predicted\")\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
